#pragma once    //防止头文件被重复展开

#include <stdio.h>

#define BUFFER_SIZE 1024   //缓冲区大小

//通过位图的方式，控制刷新方式
#define BUFFER_NONE 0x1    //无缓冲
#define BUFFER_LINE 0x2    //行缓冲
#define BUFFER_ALL 0x4     //全缓冲

typedef struct MY_FILE
{
    char _buffer[BUFFER_SIZE];  //缓冲区
    size_t _current;    //缓冲区下标
    int _flush;  //刷新方式，位图结构

    int _fd;    //文件描述符
}MY_FILE;

MY_FILE *my_fopen(const char *path, const char *mode); //打开文件
int my_fclose(MY_FILE *fp);   //关闭文件
int my_fflush(MY_FILE *stream);   //缓冲区刷新
size_t my_fwrite(const void *ptr, size_t size, size_t nmemb, MY_FILE *stream);    //数据写入
size_t my_fread(void *ptr, size_t size, size_t nmemb, MY_FILE *stream);   //数据读取